home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lantools / an009c / an009c.txt
Text File  |  1991-01-10  |  87KB  |  1,643 lines

  1. NetWare Communications Processes
  2.  
  3.  Paul Turner
  4.  Consultant
  5.  Systems Engineering Division
  6.  
  7. Abstract: 
  8.  
  9. This AppNote provides a comprehensive explanation of the protocols and
  10. algorithms that govern communications in the 286-based NetWare, NetWare
  11. 386, and Portable NetWare environments. Topics covered include routing
  12. and connection control.
  13.  
  14. Disclaimer
  15.  
  16. Novell, Inc. makes no representations or warranties with respect to the
  17. contents or use of these Application Notes (AppNotes) or any of the
  18. third-party products discussed in the AppNotes. Novell reserves the right
  19. to revise these AppNotes and to make changes in their contents at any
  20. time, without obligation to notify any person or entity of such revisions
  21. or changes. These AppNotes do not constitute an endorsement of the third-
  22. party product or products that were tested. The configuration or
  23. configurations tested or described may or may not be the only available
  24. solution. Any test is not a determination of product quality or
  25. correctness, nor does it ensure compliance with any federal, state or
  26. local requirements. Novell does not warranty products except as stated in
  27. applicable Novell product warranties or license agreements.
  28.  
  29. Copyright { 1990 by Novell, Inc., Provo, Utah. All rights reserved.
  30.  
  31. As a means of promoting NetWare AppNotes, Novell grants you without
  32. charge the right to reproduce, distribute and use copies of the AppNotes
  33. provided you do not receive any payment, commercial benefit or other
  34. consideration for the reproduction or distribution, or change any
  35. copyright notices appearing on or in the document.
  36.  
  37. Introduction
  38.  
  39. This AppNote is a preliminary excerpt from an upcoming Novell Systems
  40. Engineering Division research report entitled "NetWare Internals and
  41. Structure." It provides a technical description of the protocols that
  42. make client-server communications possible on NetWare networks. The
  43. information contained in this document will be most valuable to those
  44. individuals designing, implementing or administrating large NetWare
  45. internetworks. It will also be useful to individuals and organizations
  46. developing applications specifically for NetWare.
  47.  
  48. The document begins with an explanation of the packet structures defined
  49. by each protocol. It then describes the algorithms followed by
  50. workstations, routers and file servers when transmitting or receiving
  51. packets.
  52.  
  53. Protocols
  54.  
  55. Most computer networks require that information transferred between two
  56. nodes be broken up into blocks, called packets. This packetizing makes
  57. the information more manageable for the sending and receiving nodes, and
  58. any intermediate nodes (bridges or routers). In addition to the
  59. information, or data, that is being transferred, each packet contains
  60. control information used for error checking, addressing, and other
  61. purposes. The protocols being used on the network define the content of
  62. this control information. In most cases multiple protocols exist within a
  63. packet; each protocol defines a different portion of the control
  64. information for the packet and the control information for each protocol
  65. serves a different purpose. When multiple protocols are used, the control
  66. information for the highest level protocol is first placed around the
  67. data, then the control information for each subsequent protocol in the
  68. protocol stack is added to the beginning and/or end of the packet. This
  69. is called envoloping. (See Fig. 1.)
  70.  
  71. The enveloping pattern illustrated in Fig. 1 is common in the computer
  72. communications industry but the tasks assigned to each protocol in the
  73. packet differs for different vendor's implementations. In an effort to
  74. standardize the definition of protocols-and therefore make the networking
  75. implementations of different vendors interoperable-several standards
  76. organizations have been formed by governments and corporations. One of
  77. these, the International Standards Organization (ISO), has developed a
  78. model, called the Open Systems Interconnection (OSI) model, that
  79. specifies how protocols should be defined in the future. The OSI model
  80. separates the functions required for effective computer communications
  81. (such as error checking and addressing) into seven catagories, or layers.
  82. These layers are the Application, Presentation, Session, Transport,
  83. Network, Data-Link and Physical layers.
  84.  
  85. : Example of Multiple Protocols in a Packet
  86.  
  87.  Having been defined prior to the finalization of the OSI model, the
  88. protocols used by NetWare do not all correspond exactly to the OSI
  89. model's definitions. NetWare uses a variety of protocols. Some of these
  90. protocols were developed specifically for NetWare; some are used
  91. throughout the networking industry. The protocols required for
  92. communications between NetWare workstations and file servers are the
  93. following:
  94.  
  95. o    Medium-access Protocols
  96.  
  97. o    Internetwork Packet Exchange (IPX)
  98.  
  99. o    Routing Information Protocol (RIP)
  100.  
  101. o    Service Advertising Protocol (SAP)
  102.  
  103. o    NetWare Core Protocol (NCP)
  104.  
  105. Fig. 2 provides a relative mapping of the NetWare protocols-also called
  106. the NetWare protocol stack-to the OSI model; in actuality, a direct
  107. correlation to the layer boundaries of the two architectures does not
  108. exist. The NetWare protocols follow the enveloping pattern shown in Fig.
  109. 1. More specifically, the upper level protocols (NCP, SAP, and RIP) are
  110. enveloped by the IPX and IPX is subsequently enveloped by the medium-
  111. access protocol header and trailer.
  112.  
  113. : Mapping of NetWare Protocols to OSI Model
  114.  
  115. Medium-Access Protocol Implementations
  116.  
  117. A number of medium-access protocols have been defined, many of which are
  118. used with NetWare. The focus within this document is on the
  119. implementations of medium-access protocols, the most common of which are
  120. 802.5 Token-Ring, 802.3 Ethernet, Ethernet v2.0, and Arcnet. The 802.x
  121. protocols have been defined by the Institute of Electrical and Electronic
  122. Engineers (IEEE). Ethernet v2.0 was co-developed by Xerox and Digital
  123. Equipment Corporation, and Arcnet was developed by Datapoint, Inc. These
  124. medium-access protocol implementations are primarily concerned with the
  125. transport of packets from one node to another on a single network
  126. segment.
  127.  
  128. Medium-access protocols provide bit-level error checking in the form of a
  129. cyclic redundancy check (CRC). This CRC, which is appended to every
  130. packet that is transmitted, assures that 99.9999 percent of the packets
  131. successfully received will be free of corruption. In view of this level
  132. of integrity, NetWare does not provide any additional bit-level error
  133. checking within any of its upper-level protocols. (Note that bit-level
  134. error checking checks to make sure that bits within a packet have not
  135. been corrupted. The packet-level error checking discussed later checks
  136. that complete packets are not lost.)
  137.  
  138. Medium-access protocol implementations define the addressing that
  139. distinguishes each node on a NetWare network. This addressing is
  140. implemented within the hardware of each network interface card (NIC). To
  141. move a packet to the proper node on a network, a medium-access control
  142. (MAC) header is placed at the beginning of every packet. This header
  143. contains source and destination node address fields to indicate where the
  144. packet originated and where it is going. Each NIC checks the destination
  145. address in the MAC header of each packet sent on the network segment is
  146. is attached to. If the destination address matches the NIC's own address,
  147. or if the packet is a broadcast packet intended for all nodes, the NIC
  148. will copy the packet.
  149.  
  150. Bit-level error checking and node addressing are provided by the majority
  151. of medium-access protocol implementations. IBM's Token-Ring (802.5)
  152. implementation defines a method of routing called source routing. Source
  153. routing allows ring segments to be interconnected by bridges, allowing
  154. administrators to segment network traffic. This requires that each
  155. workstation maintain a table of routes to the nodes it is communicating
  156. with. Furthermore, routing information must be included in the MAC header
  157. of each packet it sends. This information instructs bridges how to
  158. properly forward each packet to its destination. Source routing can be
  159. used instead of or in conjunction with NetWare routing.
  160.  
  161. Internetwork Packet Exchange (IPX)
  162.  
  163. The IPX protocol was adopted by Novell from Xerox Network System's (XNS)
  164. Internet Datagram Protocol. IPX is a datagram, connectionless protocol
  165. that does not require an acknowledgment for each packet sent. This packet
  166. acknowledgment, or connection control, must be provided by protocols
  167. above IPX. IPX defines internetwork and intranode addressing schemes,
  168. while relying on the network hardware for the definition of node
  169. addressing.
  170.  
  171. The network number assigned in NETGEN (NetWare 2.1x) is the basis of
  172. IPX's internetwork addressing. Each network segment on a NetWare
  173. internetwork must be assigned a unique network number. This network
  174. number is used by routers to forward packets to their final destination
  175. segment.
  176.  
  177. The IPX intranode address comes in the form of socket numbers. Since
  178. several processes are normally operating within a node, socket numbers
  179. provide a sort of mail slot so that each process can distinguish itself
  180. to IPX. As a process needs to communicate on the network, it requests
  181. that a socket number be assigned to it. Any packets that IPX receives
  182. that are addressed to that socket are passed on to the process. Hence,
  183. socket numbers provide a quick method of routing packets within a node.
  184.  
  185. Novell has reserved several socket numbers for specific purposes. These
  186. are shown in Fig. 3. Since socket numbers are internal to each node,
  187. several workstations can use the same socket number at one time without
  188. any fear of confusion. All NCP requests from workstations must be
  189. addressed to socket 451h.
  190.  
  191. : Socket Numbers Used in The NetWare Environment
  192.  
  193. The network, node, and socket addresses for the both the destination and
  194. the source are held within the packet's IPX header. The IPX header is
  195. placed after the MAC header and before the packet data. (Packet data is
  196. usually the header of a higher-level protocol.)  Fig. 4 illustrates the
  197. structure of an IPX packet on an 802.3 network.
  198.  
  199. : Structure of an IPX Packet
  200.  
  201. Routing Information Protocol
  202.  
  203. The Routing Information Protocol (RIP) facilitates the exchange of
  204. routing information on a NetWare internetwork. Like IPX, the RIP was
  205. derived from XNS. However, an extra field was added to the packet
  206. structure to improve the decision criteria for selecting the fastest
  207. route to a destination. This change prohibits the straight integration of
  208. NetWare's RIP with other undeviating XNS implementations.
  209.  
  210. The single packet structure defined by the RIP allows the following
  211. exchanges of information:
  212.  
  213. o    Workstations locate the fastest route to a network number by
  214.      broadcasting a route request (represented by "Route Request" entry
  215.      on the TRACK ON screen).
  216.  
  217. o    Routers request routing information from other routers to update
  218.      their own internal tables by broadcasting a route request
  219.      (represented by "Route Request" entry on the TRACK ON screen).
  220.  
  221. o    Routers respond to route requests from workstations and other
  222.      routers.
  223.  
  224. o    Routers perform periodic broadcasts to make sure that all other
  225.      routers are aware of the internetwork configuration.
  226.  
  227. o    Routers perform broadcasts whenever they detect a change in the
  228.      internetwork configuration.
  229.  
  230. The RIP packet structure is shown in Fig. 5. This structure is enveloped
  231. within the data area of IPX. The Operation field indicates whether the
  232. packet is a request or a response. A 1 in this field indicates a request
  233. and a 2 indicates a response. The Operation field can be followed by one
  234. or more (n) sets of information, each consisting of a network number and
  235. the number of Hops and Ticks to that network number. A RIP packet can
  236. contain a maximum of 50 sets of network number information.
  237.  
  238. The term "Hops" refers to the number of routers that must be passed
  239. through to reach a network number. A "tick" is roughly 1/18 of a second
  240. (there are 18.21 Ticks in a second, to be precise). The number of Ticks
  241. measures how much time the packet takes to reach a network number. The
  242. number in this field is always at least one. The original XNS definition
  243. of the RIP did not include the Number of Ticks field. The Ticks field was
  244. added by the developers of NetWare so that the NetWare shell could
  245. estimate how long it should wait for a response from a file server. (This
  246. will be explained in the discussion of the shell's receive time-out.)
  247. Also, if multiple routes exist to a network number, a router uses the
  248. route with the shortest number of Ticks when forwarding packets to that
  249. network number.
  250.  
  251. If a RIP packet is a request for information, only the Network Number
  252. field applies; the Hops and Ticks fields are essentially nulled out. A
  253. response packet can be either a reply to a request from a router or
  254. workstation or a periodic broadcast by a router.
  255.  
  256. : RIP Packet Structure
  257.  
  258. Service Advertising Protocol (SAP)
  259.  
  260. The Service Advertising Protocol (SAP) allows service-providing nodes-
  261. such as file servers, print servers, and gateway servers-to advertise
  262. their services and addresses. The SAP makes the process of adding and
  263. removing services on an internetwork dynamic. As servers are booted up,
  264. they advertise their services using the SAP; when they are brought down,
  265. they use the SAP to indicate that their services will no longer be
  266. available.
  267.  
  268. Through the SAP, clients on the network can determine what services are
  269. available on the network and obtain the internetwork address of the nodes
  270. (servers) where they can access those services. This is an important
  271. function, since a workstation cannot initiate a session with a file
  272. server without first having that server's address.
  273.  
  274. A gateway server, for instance, will broadcast a SAP packet every 60
  275. seconds (the period defined for all servers advertising with the SAP)
  276. onto the network segment it is connected to. The SAP agent in each router
  277. on that segment copies the information contained in the SAP packet into
  278. an internal table called the Server Information table. Because the SAP
  279. agent in each router keeps up-to-date information on available servers, a
  280. client wanting to locate the gateway server can access a nearby router
  281. for the correct internetwork address.
  282.  
  283. Like the RIP, the SAP uses IPX and the medium-access protocol for its
  284. transport.  Fig. 6 illustrates the SAP packet structure. The first field
  285. defines the operation that the packet is performing. The packet can
  286. perform five different operations:
  287.  
  288. o    A workstation request for the name and address of the nearest server
  289.      of a certain type (this is represented by a "Get Nearest Server"
  290.      entry on a TRACK ON screen.)
  291.  
  292. o    A general request, by a router, for the names and addresses of
  293.      either all the servers or all the servers of a certain type on the
  294.      internetwork ("Send All Server Info." on TRACK ON.)
  295.  
  296. o    A response to either a "Get Nearest Server" request ("Give Nearest
  297.      Server" entry on TRACK ON) or a general request
  298.  
  299. o    Periodic broadcasts by servers and routers
  300.  
  301. o    Changed server information broadcasts
  302.  
  303. Following the Operation field are one or more sets of fields. Each set
  304. includes a service type server name, network address, node address,
  305. socket number and a number of Hop fields. If the packet contains
  306. information about more than one server, it will contain more than one set
  307. of fields (n sets of fields). Each SAP packet can contain information
  308. about up to seven servers.
  309.  
  310. : SAP Packet Structure
  311.  
  312. NetWare Core Protocol
  313.  
  314. The NetWare Core Protocol (NCP) makes interaction between clients and
  315. file servers possible by defining two aspects of their interaction,
  316. connection control and service request encoding. Because the creation and
  317. handling of NCP packets is done by the NetWare shell or NetWare Requester
  318. for OS/2, you do not need an in-depth understanding of the NCP,but you
  319. should  have some idea of what the protocol does.
  320.  
  321. The NCP provides its own session control and packet-level error checking
  322. instead of relying on other protocols for these functions. Consequently,
  323. the modularity of the protocol stack is reduced but, in the long run, a
  324. more efficient mechanism is attained.  Fig. 7 shows the general structure
  325. of an NCP packet. When a client establishes a session with a file server,
  326. it is assigned a connection number. This connection number must be
  327. included in all subsequent service requests that the client submits. The
  328. connection number allows the file server to keep track of which clients
  329. are making requests, for response and security purposes.
  330.  
  331. :  Structure of an NCP Packet
  332.  
  333. Each NCP request packet submitted on a given connection must be assigned
  334. a sequence number by the client. The first request following the
  335. establishment of the connection is assigned the number 1; that number is
  336. incremented by one for each subsequent request. When a file server
  337. finishes processing a request, it places the sequence number for that
  338. request in the response packet. Hence, the client can make sure that it
  339. is receiving the correct responses for the requests that it submits.
  340.  
  341. Each of the services available at a NetWare file server has been assigned
  342. a number. When it needs to submit a request to a server, the shell or
  343. requester places the number-as well as any additional information that
  344. might be needed-in the service code field of the NCP packet. Depending on
  345. the service being requested, the NCP might provide additional fields for
  346. the shell to give specific instructions to the file server-such as which
  347. part of a file to read. The file server might report any problems or
  348. errors that might have occurred while processing the request in these
  349. additional fields.
  350.  
  351. Packet Delivery
  352.  
  353. On a NetWare network, the successful delivery of a packet depends on the
  354. proper addressing of the packet and the internetwork configuration
  355. (whether it is a single segment network or series of segments
  356. interconnected by repeaters, bridges and/or routers). The addressing of
  357. the packet is handled in its medium-access protocol and IPX address
  358. fields. To send a packet to another node, the sending node must know the
  359. full internetwork address (network, node, and socket) of the node it
  360. desires to send to (the destination node). (The process of obtaining
  361. another node's address is explained in the section entitled "Establishing
  362. a Connection.") Once the sending node has the destination node's address
  363. it can proceed with addressing the packet. The way the MAC header of that
  364. packet is addressed, however, depends on whether the sending and
  365. destination nodes are separated by a router.
  366.  
  367. In the event that the sending and destination node are on the same
  368. network segment-that is, they both have the same IPX network address-the
  369. sending node addresses the packet in the following way: The node address
  370. of the destination node is placed in the MAC header destination address
  371. field. The node address of the sending node is placed in the MAC header
  372. source address field. The full internetwork address of the destination
  373. node is placed in the IPX header destination address fields. The full
  374. internetwork address of the sending node is placed in the IPX header
  375. source address fields.
  376.  
  377. Fig. 8 shows an example of two nodes that are connected to network number
  378. AA. The sending node (node 01) sending a packet to node 02. The sending
  379. node places node address 02 in the destination field and node address 01
  380. in the source field of the MAC. In the destination address fields of the
  381. IPX header, the sending node places AA, 02 and 451 (the full internetwork
  382. address of the receiving node). The sending node places its own
  383. internetwork address of AA, 01 and 4003 in the source address fields of
  384. the IPX header.
  385.  
  386. : Transmission to Same Network Segment (No Routing Required)
  387.  
  388. Network Interconnection Devices
  389.  
  390. The addressing method depicted in Fig. 8 is used when the two nodes
  391. reside on the same physical segment (or ring) or if they reside on
  392. separate segments interconnected by repeaters or bridges. A repeater is a
  393. Physical Layer (OSI model) device that amplifies the signal of one
  394. segment onto one or more other segments. Repeaters are used to extend the
  395. maximum possible distance between end nodes on a segment. They are
  396. completely transparent to the sending and receiving nodes.
  397.  
  398. A bridge is a Data-Link Layer device used to interconnect cable segments
  399. locally or over wide area network links. Instead of simply amplifying a
  400. signal as repeaters do, bridges retransmit packets received on one
  401. segment onto another segment. Bridges are considered Data-Link Layer
  402. devices because they examine the data-link (or MAC header) portion of
  403. packets before retransmitting them onto other segments. There are two
  404. predominant types of bridges, transparent bridges and source routing
  405. bridges.
  406.  
  407. Transparent bridges interconnect two or more segments. They examine the
  408. MAC header source and destination fields of every packet transmitted on
  409. their connected segments. From the source address fields of packets,
  410. these bridges develop a table of the nodes that reside on (or are
  411. accessible through) each of their connected segments. With this table of
  412. information, a bridge can determine whether packets should be passed on
  413. to other segments.
  414.  
  415. Fig. 9 shows a transparent bridge connected to two separate segments.
  416. After examining the packets transmitted on both segments it creates a
  417. table that tracks which nodes exist on each segment. With this table, the
  418. bridge can filter unnecessary traffic. For instance, if node 1 sends a
  419. packet to node 5, the bridge will not retransmit that packet on its port
  420. B. It will, however, retransmit packets sent from node 1 to node 7. Like
  421. repeaters, transparent bridges-as their name implies-are transparent to
  422. the sending and receiving nodes.
  423.  
  424. : Example Transparent Bridge
  425.  
  426. Routers
  427.  
  428. Routers, like bridges, interconnect different network segments; however,
  429. the operation of routers and bridges is quite different. Routers by
  430. definition are network layer devices. (See Fig. 10.) In other words,
  431. routers receive their instructions for forwarding a packet from one
  432. segment to another from a network layer protocol. The network layer
  433. protocol that routers use in the NetWare environment is IPX. NetWare-
  434. compatible routers are available with NetWare or from third-party
  435. manufacturers. The routers that come packaged with NetWare have actually
  436. been misnamed bridges in the past. The NetWare routers include what has
  437. been called the internal bridge within NetWare file servers and external
  438. bridge installed at workstations. Novell has officially renamed these two
  439. devices internal router and external router.
  440.  
  441. NetWare-compatible routers may be configured to interconnect two or more
  442. segments. Each of these segments, however, must be assigned a unique IPX
  443. network number to distinguish it from other segments on the internetwork.
  444. A segment's network number must be configured into each of the routers
  445. connected to that segment. The network number serves as a common address
  446. for each node connected to a segment.
  447.  
  448. : OSI Representations of Network Devices
  449.  
  450. Packet Routing
  451.  
  452. When a node wants to send information to another node, it must first have
  453. network address-as well as the node address-of the destination node. If
  454. the two nodes have the same network number (reside on the same segment),
  455. the sending node can simply send packets to the destination node using
  456. method illustrated in Fig. 8. On the other hand, if the two nodes have
  457. different network numbers (reside on different network segments), the
  458. sending node must find a router on its own segment that can forward
  459. packets to the destination node's network segment. To find this router,
  460. the workstation broadcasts a RIP packet requesting the fastest route to
  461. the destination node's network number (RIP requests are discussed in more
  462. detail later in the section entitled "Establishing a Connection". This
  463. RIP request is responded to by the router residing on the sending nodes
  464. segment with the shortest path to the desired segment; in the response,
  465. the router includes its node address.
  466.  
  467. Once the sending node receives the router's node address, it is prepared
  468. to send packets to the destination node. The sending node addresses these
  469. packets in the following way: It places the destination node's
  470. internetwork address (network, node and socket number) in the destination
  471. address fields of the IPX header. Next the sending node places its own
  472. internetwork address in the source address fields of the IPX header. Then
  473. the sending node places the node address of the router-the one that
  474. responded to the RIP request-in the destination address field of the MAC
  475. header. The sending node places its own node address in the source
  476. address field of the MAC header. (See Fig. 11.)
  477.  
  478. : Packet Addressing Through a Router
  479.  
  480.  When a router receives a packet to be routed, it can take one of two
  481. possible actions. If the packet is destined for a network number that the
  482. router is directly connected to, the router will place the destination
  483. node address from the IPX header in the destination address field of the
  484. MAC header, place its own node address in the source address field of the
  485. MAC header, and transmit the packet. (See Fig. 11.)
  486.  
  487. If the router is not directly connected to the segment that the final
  488. destination node resides on, however, it will send the packet to the next
  489. router in the path to the destination node. To forward the packet to
  490. another router, the router will place the node address of that other
  491. router in the destination address field of the MAC header. The router
  492. will place its own node address in the source address field of the MAC
  493. header. The router leaves the IPX header as initially set by the sending
  494. node and sends the packet.
  495.  
  496. Routing Information Administration
  497.  
  498. To forward packets by the best possible route, NetWare routers maintain a
  499. Routing Information table that holds information about all the network
  500. segments on the internetwork.  Fig. 12 gives an example of a Routing
  501. Information table (only the fields  pertinent to this discussion have
  502. been included). Each entry in the Routing Information table gives the
  503. router forwarding information for a network segment.
  504.  
  505. : Portion of Routing Information Table
  506.  
  507. The first field contains the network numbers for segments that the router
  508. is currently aware exist. The router simply matches the destination
  509. network number in the packet's IPX header with an entry in this field to
  510. get its forwarding instructions for the packet. The second field
  511. indicates the number of routers that must be traversed to reach the
  512. network segment.
  513.  
  514. An estimate of the time necessary to reach the destination segment is
  515. recorded in the third field. The initial time estimate for a segment is
  516. the responsibility of the driver directly connected to it. This driver
  517. reports this estimate to its router. This time estimate is used by the
  518. router in its periodic broadcasts to indicate the time necessary to
  519. deliver a packet to a node on that segment. The method that drivers use
  520. for estimating the time delay on a segment depends on the segment type.
  521. For local segments with more than 1 Mb/sec of bandwidth (Token-Ring,
  522. Ethernet, Arcnet, and so on), the driver makes the assumption that
  523. delivery time is one tick. For remote segments (T1, 64 kbps, X.25, and
  524. asynchronous), the driver will periodically poll to determine the current
  525. time delay. For instance, the delay for a T1 link normally ranges from
  526. six to seven Ticks. If this delay changes, the driver will inform its
  527. router. As information about the segment is passed along throughout the
  528. network (by way of periodic broadcasts), routers will add any additional
  529. delay that they impose to the initial time estimate for the segment.
  530.  
  531. The NIC field of the Routing Information table records which NIC in the
  532. router the network segment can be reached through. The Immediate Address
  533. field contains the node address of the router that can forward packets to
  534. each segment. If the segment is directly connected to the router, this
  535. field will remain empty. The "Net Status" field indicates whether the
  536. segment is directly connected to the router and whether the segment is
  537. considered reliable. The final field is used to make sure that
  538. information about the segment is current.
  539.  
  540. For NetWare versions prior to 2.15c, the Routing Information table keeps
  541. a list of all alternate routes for each network number in case the
  542. primary shortest route to a network number goes down. In other words, if
  543. the router can reach the segment through more than one of its NICs, it
  544. will make a record of both routes. The fastest route, the one that
  545. requires the least number of Ticks, will always be used as the primary
  546. route. NetWare versions after 2.15c maintain alternate routes only if
  547. these alternate routes require the same amount of Ticks to reach the
  548. segment as the primary route. This reduces the size of the Routing
  549. Information table.
  550.  
  551. Routing Information Broadcasts
  552.  
  553. On an internetwork, routers are constantly exchanging information with
  554. each other to make sure that their Routing Information tables reflect up-
  555. to-the-minute changes in the layout of the internetwork. To accomplish
  556. this, routers transmit a series of broadcasts from the time they come up
  557. until they are brought down. These broadcasts can be separated by the
  558. time at which they occur:
  559.  
  560. o    Initial broadcast of directly connected network segments
  561.  
  562. o    Initial request to receive routing information from other routers
  563.  
  564. o    Periodic broadcasts (every 60 seconds) of current list of active
  565.      network numbers
  566.  
  567. o    Broadcast of change in internetwork configuration
  568.  
  569. o    Final broadcast when brought down
  570.  
  571. Although the broadcasts occur at different times and, for the most part,
  572. contain different information, they must follow two important rules.
  573. First, each broadcast must be a local broadcast, addressed so that it
  574. will not be immediately passed on, intact, by the routers that receive
  575. it. This reduces the network traffic created by these information
  576. exchanges. Second, routers must follow a "best information" algorithm
  577. when providing information to other routers through a broadcast (since
  578. the second broadcast listed above is a request for information, this rule
  579. does not apply to it).
  580.  
  581. Best Information Algorithm
  582.  
  583. The purpose of routing information broadcasts is twofold: to allow a
  584. router to share its current impression of the layout of internetwork with
  585. other routers, and to inform the routers of an internetwork change so the
  586. routers can update their tables. A router sends routing information
  587. broadcasts to every network segment that it is directly connected to. The
  588. first rule of the best information algorithm dictates that a router about
  589. to broadcast to a particular network segment should not include any
  590. information about other segments that it has received from the segment to
  591. which the information is being sent.
  592.  
  593. For example, if the router within server FS2 in Fig. 13 is going to
  594. broadcast a routing information broadcast to network segment BB, it will
  595. not include information that it received from FS1 about network segment
  596. AA. If it did, someone on segment BB might erroneously conclude that
  597. there are two paths to segment AA-one through FS1 and another through
  598. FS2.
  599.  
  600. : The Best Information Algorithm
  601.  
  602. The best information algorithm also states that routers should not
  603. include information about the network segment that they are sending
  604. routing information broadcasts to. For example, FS2 would not include
  605. information about BB in its broadcast onto BB.
  606.  
  607. Taking these rules into account, the information that FS2 would broadcast
  608. onto segment BB would be information about segments CC and DD.
  609.  
  610. Initial and Periodic Broadcasts
  611.  
  612. When a router is first brought up, it places the network numbers of its
  613. directly connected segments into its Routing Information table. Then,
  614. following the best information algorithm, the router sends a routing
  615. information broadcast to inform the routers on its directly connected
  616. segments of the segments that the router will be making available. The
  617. router next broadcasts a request to each of its directly connected
  618. segments for information about all other network segments that exist on
  619. the internetwork. This request is responded to by all the routers (each
  620. using the best information algorithm) on these directly connected
  621. segments. The router places the information gleaned from these responses
  622. in its Routing Information table. Fig. 14 illustrates this initial
  623. sequence of broadcasts.
  624.  
  625. : Sequence Used to Build and Maintain Routing Information Table
  626.  
  627. Once the router has performed these initial broadcasts and updated its
  628. Routing Information table, it is ready to accept routing requests and
  629. route packets. In addition to routing packets, the routers will broadcast
  630. all the information in their Routing Information table (except that
  631. excluded by the best information algorithm) to each of their connected
  632. network segments every 60 seconds. Routers perform these periodic
  633. broadcasts to make sure that all routers on the internetwork remain
  634. synchronized.
  635.  
  636. Because of lower bandwidth of X.25 and asynchronous links, routers do not
  637. perform 60 second broadcasts on these links-only initial broadcasts,
  638. changed information broadcasts and final broadcasts are sent over these
  639. links.
  640.  
  641. Changed Information Broadcasts
  642.  
  643. When a router receives information that causes it to change its Routing
  644. Information table, the router will immediately pass that information on
  645. to its other directly connected network segments except the segment that
  646. the router received the information from. If a new network segment comes
  647. up or an existing segment goes down, all the routers on the internetwork
  648. will learn about the change in a short amount of time.
  649.  
  650. The primary cause of a change in the internetwork's configuration are
  651. file servers and external routers coming up or going down. If a router
  652. needs to be brought down (using the DOWN command at the console) the
  653. router will inform its directly connected segments of the fact before
  654. discontinuing service. The router issues broadcasts (as always, using the
  655. best information algorithm) that indicate that the network segments which
  656. the router had made available will no longer be accessible through this
  657. router. (See Fig. 15.)
  658.  
  659. : Routers Inform Other Routers When Going Down
  660.  
  661. The Process of Aging
  662.  
  663. If a router goes down due to a hardware failure, power glitch, or power
  664. outage, other routers will not be notified that a change has occurred. To
  665. safeguard against this eventuality an "aging" mechanism has been built in
  666. to NetWare routers.
  667.  
  668. Routers maintain a timer for each entry in their Routing Information
  669. table. Every time that information is received concerning the entry, the
  670. timer is reset to zero. If the timer reaches three minutes, the router
  671. assumes that the route to the network number is down and broadcasts that
  672. fact to its other segments. Since this information is new or changed, the
  673. routers that receive the information will pass it on immediately and the
  674. change will quickly permeate the internetwork.
  675.  
  676. Service Advertising
  677.  
  678. Using the SAP, servers on a NetWare network can advertise their services
  679. and addresses. The information that these servers broadcast is not
  680. directly used by clients but instead collected by a SAP agent within each
  681. NetWare router on the server's segment. The SAP agents store this
  682. information in a Server Information table and, if they reside within a
  683. server, in their server's bindery. The clients can then contact the
  684. nearest SAP agent or file server for server information.
  685.  
  686. The SAP broadcasts that servers perform are local broadcasts and,
  687. therefore, only received by SAP agents on their connected segments.
  688. Consequently, SAP agents periodically broadcast their server information
  689. so that all SAP agents on the internetwork have information about all
  690. servers that are active on the internetwork-this is the same broadcast
  691. method used by routers to distribute and exchange network number (RIP)
  692. information.
  693.  
  694. Server Information Table
  695.  
  696. The table that SAP agents use to store information received in SAP
  697. broadcasts is called the Server Information table. If all SAP agents on
  698. the internetwork are exchanging SAP information properly, each agent's
  699. Server Information table should have information about all the servers on
  700. the internetwork-thus providing clients with nearby access to the
  701. addresses of all the servers on the internetwork. Fig. 16 illustrates
  702. some of the more pertinent fields of the Server Information table.
  703.  
  704. : Portion of a NetWare Router's Server Information Table
  705.  
  706. The Server Address field contains the service's full address, including
  707. network, node, and socket addresses. The Server Type field holds a number
  708. designating what type of service the server provides. One server might
  709. provide printing services as opposed to file services, for instance. The
  710. server type designation used to assign numbers to the different services
  711. that servers provide is part of a more generic scheme used in the bindery
  712. to classify objects. Some of the more common object types are shown in
  713. Fig. 17.
  714.  
  715. : Object Types
  716.  
  717. The Time Since Changed field is used for aging servers that have
  718. unexpectedly gone down. The NIC that the information about the server was
  719. received on is specified in the NIC Number field.
  720.  
  721. The way that information within the Server Information table is stored
  722. makes sequential access (send me information about all servers with
  723. server type 4, for instance) possible but makes database access (send me
  724. information about server NCS) very difficult. Therefore, the Server Name,
  725. Server Address, Server Type and Hops to Server fields of the Server
  726. Information table are periodically copied to file server's binderies by
  727. internal SAP agents-SAP agents that reside within file servers. With this
  728. information stored in file server binderies, any client that has a
  729. connection with a NetWare file server can query the bindery for the
  730. address of a specific server.
  731.  
  732. Server Information Administration
  733.  
  734. When a file server is first brought up, its internal SAP agent places the
  735. name of the server in the agent's Server Information table. The SAP agent
  736. then sends a SAP broadcasts onto each of its directly connected segments
  737. to inform the SAP agents on those segments that a new server has become
  738. available. (See Fig. 18.)
  739.  
  740. : Sequence Used to Build and Maintain Server Information Table
  741.  
  742. After performing its initial broadcasts, the SAP agent broadcasts a
  743. request onto each of its directly connected segments for information
  744. about other servers that exist on the internetwork. These requests are
  745. responded to by all the SAP agents on these directly connected segments.
  746. The SAP agent places the information received in these responses in its
  747. Server Information table. Thereafter, the SAP agent performs broadcasts
  748. about the servers that it is aware of every 60 seconds (except on
  749. asynchronous and X.25 links). illustrates these initial and periodic
  750. broadcasts.
  751.  
  752. As with routing information broadcasts, all server information broadcasts
  753. are local broadcasts and are subject to the best information algorithm.
  754. Any changes in server information are passed on immediately to ensure
  755. current information across the internetwork. The router applies the aging
  756. process to its Server Information table entries in case any servers
  757. become unavailable. Finally, if the router is brought down, it will
  758. indicate to its directly connected segments that the servers the router
  759. has been advertising will no longer be available. (See Fig. 19.)
  760.  
  761. : FS2 Brought Down
  762.  
  763. File Server Addressing
  764.  
  765. Value-added servers, such as gateway and print servers, normally contain
  766. only one network adapter and will use the address of that adapter as the
  767. address they advertise in their periodic SAP broadcasts. NetWare file
  768. servers, on the other hand, may contain multiple adapters. This requires
  769. that they use some sort of convention for advertising the address of
  770. their file services; the convention used for this addressing differs for
  771. 286- and 386-based servers. Within the 286-based environment, the file
  772. services of a server are addressed with respect to its NIC A. This
  773. convention guarantees consistency since every server will have at least
  774. one network adapter installed. (See Fig. 20.) If you enter an SLIST
  775. command, the address you see for 286-based servers is the network and
  776. node address assigned to the server's NIC A.
  777.  
  778. : Addressing of File Services on a 286-based NetWare File Server
  779.  
  780. In the NetWare 386-based servers, an internal network has been added for
  781. the addressing of internal services, as shown in Fig. 21. This different
  782. method of addressing requires that an internal network number be assigned
  783. when a NetWare 386-based file server is brought up.
  784.  
  785. : Addressing of File Services in NetWare 386-based Server
  786.  
  787. Fig. 22 displays an SLIST screen that contains 286- and 386-based
  788. servers. The 386-based servers can be distinguished by their node address
  789. of one. This node address is assigned to the file services on the
  790. internal network number. The implementation of redundant cabling systems
  791. with 286-based servers is discussed in a later section.
  792.  
  793. : Example SLIST Listing
  794.  
  795. Client-Server Interaction
  796.  
  797. The NetWare shell facilitates client-server communications for DOS-based
  798. workstations. In a typical client-server interaction, one station (the
  799. client) requests services from another station (the server). Through the
  800. shell, DOS-based applications can request file services (such as writing
  801. to and reading from files) from NetWare file servers. At the workstation,
  802. the shell, the user application, and the user together act as the client
  803. requesting file services; the NetWare file server acts as the server
  804. providing file services.
  805.  
  806. The shell, then, is the liaison between the client (the user application)
  807. and the server. The shell performs the tasks necessary to request file
  808. services from a NetWare file server: for example, establishing a
  809. connection with the file server, maintaining the connection, and
  810. terminating the connection.
  811.  
  812. The NetWare shell is a terminate-and-stay-resident (TSR) program called
  813. NETx.COM (where x depends on the version of DOS being run). NETx.COM is
  814. loaded into a NetWare workstation's memory when the workstation is
  815. booted. Before you load the shell, however, you must load another TSR
  816. called IPX.COM
  817.  
  818. IPX.COM
  819.  
  820. Novell's IPX protocol serves as the communications link with the NIC
  821. installed in the workstation. At installation, a customized version of
  822. IPX.COM is generated for each workstation by linking in a driver written
  823. specifically for the NIC that resides in that workstation. Once IPX.COM
  824. is loaded, any workstation programs, including the shell, can communicate
  825. on the network through NetWare's IPX protocol.
  826.  
  827. In addition to interfacing with the NIC, IPX.COM performs several
  828. communication-related functions. For example, it manages the IPX sockets
  829. used with the workstation. The shell and other applications access
  830. IPX.COM to open and close IPX sockets. When the workstation receives an
  831. IPX packet, IPX.COM checks which socket the packet is addressed to and
  832. passes the packet to the program having that socket open.
  833.  
  834. Finally, IPX.COM is responsible for determining the address of the
  835. network segment to which the workstation is physically connected. The
  836. workstation's network number, along with its node address, make up the
  837. workstation's full internetwork address.
  838.  
  839. IPX can determine the workstation's network number in one of two ways. In
  840. the first method, IPX.COM watches for any RIP broadcasts sent on the
  841. network. Since RIP packets are not forwarded to other network segments,
  842. IPX knows that this type of broadcast originated on the segment to which
  843. the workstation is directly connected. IPX simply reads the source
  844. network address contained in the IPX header of a RIP broadcast to
  845. determine the workstation's network number.
  846.  
  847. IPX uses an alternate method if the shell requests a route to a network
  848. number before IPX can determine the workstation's network number from a
  849. RIP broadcast. In this case, IPX broadcasts a Get Local Target request,
  850. which requests the fastest route to the destination network number
  851. requested by the shell. Upon receiving a response, IPX.COM checks the
  852. source network number in the IPX header of the response packet. This
  853. source network number (the network number of the router that responded to
  854. the Get Local Target request) is the workstation's network number.
  855.  
  856. The NetWare Shell
  857.  
  858. The shell (NETx.COM) acts as the interface between user applications and
  859. NetWare file servers. As user applications make requests, the shell
  860. determines whether the requests should be handled locally by DOS or sent
  861. to a server on the network. If the shell determines that the request
  862. should be sent to a network server, the shell formulates a request
  863. packet, hands it to IPX.COM for transmission, and waits for a response.
  864.  
  865. Prior to submitting any requests to a server, the shell must establish a
  866. connection with that server. The shell can establish a connection to a
  867. server in two ways: When the shell is first loaded at the workstation, it
  868. logically attaches to the first server that responds (usually the server
  869. nearest to the workstation). The LOGIN and ATTACH command line utilities,
  870. when executed, also establish a server connection.
  871.  
  872. To establish a connection, the workstation and the server must exchange
  873. several packets: a packet requesting that a connection number be assigned
  874. to the shell, and another proposing the maximum packet size that will be
  875. allowed in the interaction between the file server and the shell. Before
  876. sending these initial packets, the shell needs the address of the server
  877. and a route to the server.
  878.  
  879. Getting a Server's Address
  880.  
  881. To get a server's address, the shell can use the SAP to broadcast a
  882. request for the address of the nearest server-a Get Nearest Server
  883. request. All routers on the workstation's network segment having
  884. information about the nearest server respond to the Get Nearest Server
  885. request. Each response contains the nearest server's name, its full
  886. internetwork address, and the number of Hops required to reach the
  887. server. (See Fig. 23.)
  888.  
  889. : Getting the Address of the Nearest File Server
  890.  
  891.  When first loaded at a workstation, the shell issues a Get Nearest
  892. Server request to establish an initial connection to a file server. If
  893. the shell loses its connections with all file servers, it resorts to the
  894. Get Nearest Server request method to re-establish a server connection.
  895.  
  896. A second method the shell uses to get a server's address is to use the
  897. NCP to access a file server's bindery. The bindery is a database within
  898. NetWare file servers that contains information about many network
  899. entities, including users, groups, and servers.
  900.  
  901. Because the shell must already have a server connection before it can
  902. access the server's bindery, the shell can use this second method only
  903. after it has established an initial connection to a file server. The
  904. LOGIN and ATTACH utilities use this method, as does the new "preferred
  905. server" shell (version 3.01). These utilities allow the user to specify a
  906. specific file server name, and then these utilities use that name to scan
  907. the bindery for the server's address.
  908.  
  909. Getting a Route to a Server
  910.  
  911. Once the shell has the address of a server, it needs a route to that
  912. address. The shell uses this route for all subsequent communications with
  913. the server for the duration of the connection.
  914.  
  915. To obtain a route, the shell submits a Get Local Target request to
  916. IPX.COM. IPX first compares the network number of the desired server to
  917. the workstation's network number. If these two numbers are the same, IPX
  918. tells the shell to send requests directly to the server (without going
  919. through an intermediate router).
  920.  
  921. If the network number the shell submits and the workstation's network
  922. number are not the same, IPX broadcasts a RIP request for the fastest
  923. route to the submitted network number. Whichever router on the
  924. workstation's network segment has the shortest route to the network will
  925. respond to the request. More than one router might respond if several
  926. routers have a route equal to the shortest route. IPX accepts only the
  927. first router's response, discarding all others.
  928.  
  929. IPX then returns to the shell the node address of the first router that
  930. responded. The shell places the node address of this router in the MAC
  931. header of a Create Connection request packet; it addresses the IPX header
  932. of the request packet to the file server it wants to connect to. With the
  933. packet addressed in this fashion, the router will receive the packet
  934. first, check the IPX destination address, and forward the packet toward
  935. the network number on which the file server resides. (See Fig. 24.)
  936.  
  937. : Requesting the Fastest Route to an Address
  938.  
  939. Establishing an Initial Connection
  940.  
  941. To establish its connection to a file server, the shell uses a
  942. combination of the SAP, the RIP, and the NCP. The sequence followed is
  943. slightly different for the new "preferred server" shell (version 3.01)
  944. than it is for previous shell versions.
  945.  
  946. Fig. 25 shows the steps taken by pre-v3.01 shells to make a connection
  947. with a file server. The first column represents the call or packet sent.
  948. The second column lists the source, or sender, of the packet. The third
  949. column lists the addressee of the packet. The final column indicates the
  950. protocol used for the packet.
  951.  
  952. : Initial Connection Sequence for NetWare Shells
  953.  
  954. We have already seen how the first four steps work. In steps 1 and 2, the
  955. shell obtains the address of the nearest server. Step 3 is IPX.COM's
  956. request for the fastest route to the address that the shell received in
  957. step 2. Step 4 is the response by all routers with the shortest route to
  958. that segment.
  959.  
  960. Steps 5 through 8 show the packets exchanged between the shell and the
  961. server to establish the initial connection. Once this connection is made,
  962. the shell moves to the background (terminates-and-stays-resident) and
  963. returns the DOS prompt to the user. The user can then execute LOGIN.EXE
  964. to log in to the connected server or to another server.
  965.  
  966. The Preferred Server Shell
  967.  
  968. The preferred server shell (v3.01 and above) features several additional
  969. functions not offered by older versions of the shell. As its name
  970. implies, the preferred server shell allows users to specify, either at
  971. the command line or in the SHELL.CFG file, which server they would like
  972. to connect with. Whether or not a preferred server is specified, the
  973. preferred server shell goes through the same initial eight steps as the
  974. old shells.
  975.  
  976. If the server the shell connects to during the initial eight steps is not
  977. the preferred server the user specified, the preferred server shell
  978. performs several additional steps to establish a connection with the
  979. specified server. (See Fig. 26.)
  980.  
  981. For instance, if the workstation in Fig. 24 initially connects to FS1 and
  982. the user specified FS3 as the preferred server, the shell will follow a
  983. sequence similar to that shown in Fig. 25. As you can see in step 9, the
  984. preferred server shell uses the bindery method of acquiring the server's
  985. address.
  986.  
  987. : Connection Sequence for the Preferred Server Shell
  988.  
  989. Steps 11 and 12 of this preferred server sequence are not always
  990. required. If the preferred server resides on the same network segment as
  991. the workstation, the shell skips these two steps and sends the Create
  992. Connection request directly to the server. The shell destroys the
  993. connection with the initial server once it has successfully established
  994. the connection with the preferred server.
  995.  
  996. Another major difference between old shells and the preferred server
  997. shell involves the receipt of Give Nearest Server responses. Older shells
  998. accept the first Give Nearest Server response they receive and ignore all
  999. subsequent responses. Preferred server shells accept the first response
  1000. also, but save the next four Give Nearest Server responses in case a
  1001. connection cannot be made to the first server.
  1002.  
  1003. Servers respond to Get Nearest Server requests even if they have no free
  1004. connections. Consequently, older shells fail to establish a connection
  1005. (steps 5 and 6 of Fig. 25) if the first Give Nearest Server response they
  1006. receive is from a server with no free connections. The preferred server
  1007. shells, on the other hand, can refer to the next saved Give Nearest
  1008. Server response if the current attempt to establish a connection fails.
  1009.  
  1010. LOGIN.EXE
  1011.  
  1012. Users can run LOGIN.EXE at any time after they have established a
  1013. connection to a NetWare file server. LOGIN submits the user's name and
  1014. password to the file server for verification. It also establishes a new
  1015. server connection if the user specifies a file server in the LOGIN
  1016. command.
  1017.  
  1018. If the server specified at the command line is not the one the shell is
  1019. already connected to, LOGIN follows the steps outlined in Fig. 27. Once
  1020. these steps are completed, LOGIN verifies the username and password. If
  1021. the server specified at the command line is located on the same segment
  1022. as the workstation, steps 3 and 4 are not necessary.
  1023.  
  1024. : Additional Steps Performed by LOGIN.EXE
  1025.  
  1026.  ATTACH.EXE uses the same sequence as that described for LOGIN.EXE when
  1027. establishing connections to a file server.
  1028.  
  1029. Connection Management
  1030.  
  1031. Communication between any two workstations requires a certain amount of
  1032. responsibility on both sides to ensure that no information is lost. NICs
  1033. maintain error checking at the bit level in the NetWare environment. File
  1034. servers and workstation shells  handle packet- and session-level error
  1035. checking; each maintains a table to handle this level of error checking.
  1036. The NCP governs the way that the connection control information is
  1037. exchanged. (It is a common misconception that SPX is used for packet
  1038. level error checking between workstations and servers; however, SPX is
  1039. only used for peer-to-peer interaction.) Every NCP packet submitted to a
  1040. NetWare file server by a client must have a connection number and
  1041. sequence number attached to it. The connection number is the number that
  1042. client was assigned by the file server when the connection was
  1043. established. The sequence number identifies each packet so that both the
  1044. server and the shell can determine when a packet is lost.
  1045.  
  1046. The Shell's Connection Table
  1047.  
  1048. NETx.COM (the shell) can support up to eight server connections
  1049. concurrently. NETx.COM maintains a connection table to track these
  1050. connections. (See Fig. 28.) Within each entry in this table, the shell
  1051. stores the name and full internetwork address of the server it is
  1052. connected to. If the shell is forwarding packets through an intermediate
  1053. router to the server, the node address of that router will be stored in
  1054. the Router's Node Address field. The shell's connection number and packet
  1055. sequence number are also in the table. The sequence number is set to zero
  1056. when the connection is first established and incremented with each new
  1057. request.
  1058.  
  1059. : Portion of Shell's Connection Table
  1060.  
  1061. The shell's connection table also maintains two time-outs. One time-out
  1062. is the maximum time that the shell will wait for a response from the
  1063. server before resending a request packet. This time-out is based on an
  1064. estimate of the time (in ticks) needed to deliver a packet to the server.
  1065. This time estimate is provided by the router in its Give Immediate
  1066. Address response. (If the workstation and the server are on the same
  1067. segment, this value is set to one tick.) The shell multiplies this
  1068. estimate by 16 and adds 10 ticks to the result to set its maximum time-
  1069. out for communications with that server.
  1070.  
  1071. The Receive Time-Out is a dynamic time-out that is originally set to four
  1072. times the time estimate (received in the Give Local Target response) plus
  1073. 10 ticks.
  1074.  
  1075. Once initially set, the receive time-out adjusts up or down to adapt to
  1076. changing network conditions. The receive time-out is increased if the
  1077. shell issues a request to a server and does not receive a response within
  1078. its current receive time-out. The receive time-out is multiplied by one
  1079. and one-half when the first retry to the server is issued. It remains at
  1080. this new value for all subsequent retries on the request and for use on
  1081. the next request. If the next request requires a retry, the receive time-
  1082. out will be increased again. The receive time-out will continue to be
  1083. increased in this fashion until it reaches the maximum time-out.
  1084.  
  1085. The shell decreases the receive time-out each time that the shell does
  1086. not have to issue a retry to a request. To decrease the receive time-
  1087. out, the shell takes the time necessary to receive a response to the last
  1088. request-the request that didn't require a retry-and multiplies that value
  1089. by two and adds 10 Ticks to it. The shell sets the new receive time-out
  1090. to the average of this calculated value and the current receive time-
  1091. out.
  1092.  
  1093. The number of times that the shell will resend a request to a server is
  1094. determined by a number called the IPX Retry Count. If this count is
  1095. exceeded the shell will give up and present the user with a "Network
  1096. error on server xxxxx. Error xxxxx from network. Abort, Retry?" message.
  1097. A default for this retry count exists for all drivers. This default
  1098. differs from driver to driver but is generally between 20 and 40. The
  1099. "IPX RETRY COUNT = xx" option for the SHELL.CFG files allows the default
  1100. IPX retry count to be modified; however, some drivers will ignore this
  1101. entry in the configuration file and leave the retry count at their
  1102. default.
  1103.  
  1104. The File Server Connection Table
  1105.  
  1106. The file server connection table, shown in part in Fig. 29, allows the
  1107. server to keep information about each of the clients that it is
  1108. servicing. The address fields are used for addressing response packets
  1109. and for security purposes. When a packet arrives with a service request,
  1110. it contains the connection number assigned to the sender. The server
  1111. matches the packet's IPX source address (network, node, socket) with the
  1112. address registered for that connection number. If the addresses don't
  1113. match, the server regards the request as a security breach.
  1114.  
  1115. : A Portion of the NetWare File Server's Connection Table
  1116.  
  1117. The NIC Number and Intermediate Router's Address fields are used for
  1118. sending responses to clients. As a request packet is received, the 
  1119. number of NIC that the request came in on is placed in the NIC Number
  1120. field-this number would be A, B, C, or D for NetWare v2.15c and earlier
  1121. versions, or the network number of the NIC for NetWare versions 3.0 and
  1122. above. If the packet was forwarded through one or more routers, the node
  1123. address of the last router is stored in the Intermediate Router's Address
  1124. field. Hence, when the request has been processed, the server does not
  1125. have to find a route to the client to send a response. The server places
  1126. the node address of the first router in the path to the client-from the
  1127. Intermediate Routers Address field-in the MAC header destination address
  1128. field and sends the packet through the NIC specified in the NIC number
  1129. field. Of course, it first places the client's and its own full network
  1130. address in the destination and source address fields of IPX header,
  1131. respectively.
  1132.  
  1133. The Sequence Number field is used for packet-level error checking. The
  1134. Watchdog Count and Timer fields are used by the watchdog process, which
  1135. is discussed later. File servers also maintain a 100-byte reply buffer
  1136. for each of their connections. If a response to a client is less than 100
  1137. bytes, the server will make a copy of the response in the buffer that
  1138. corresponds to that connection. If the client does not receive the
  1139. response and resends the request, the server will not have to reprocess
  1140. the request.
  1141.  
  1142. Packet-Level Error Checking
  1143.  
  1144. The bit-level error checking that network adapters provide detects the
  1145. corruption of individual bits within a packet. When an adapter finds that
  1146. part of a received packet is corrupted, it discards the entire packet.
  1147. Due to the driver's simple design, no mechanism exists within the driver
  1148. to request that the packet be resent or to inform the upper-layer
  1149. processes and applications that an error occurred. Therefore, the upper-
  1150. level sending process (shell or file server) must determine when a packet
  1151. has not reached its intended destination.
  1152.  
  1153. In the NetWare environment, this packet-level error checking is the
  1154. responsibility of the shell. The NCP specifies that a workstation shell
  1155. can submit only one request to a server at a time. Furthermore, the
  1156. response that the server provides must fit in a single packet-the shell
  1157. should never request more than a packet's worth of information. Thus, to
  1158. guarantee that no packets have been lost, the shell only has to make sure
  1159. that it receives a completed response to each of its requests.
  1160.  
  1161. Each request that a shell sends to a server has a sequence number
  1162. attached to it within the NCP header. The response that the server
  1163. returns is labeled with the same sequence number. Ultimately, the shell
  1164. is responsible for getting completed responses for each of the service
  1165. requests that it submits. If the shell does not receive a response to its
  1166. most recent request within the specified receive time-out, it will
  1167. resubmit the request. The shell continues to resubmit the request until
  1168. it receives a response or exceeds its IPX Retry count.
  1169.  
  1170. Three conditions could cause a shell to time-out while waiting for a
  1171. response from a server. Fig. 30 illustrates a case in which the request
  1172. is lost in transit to the server. The workstation's timer eventually
  1173. expires and the shell resends the same request. The server receives the
  1174. second request, processes it, and sends back the response.
  1175.  
  1176. : Request Lost in Transit to File Server
  1177.  
  1178. In Fig. 31, the request is received by the server but the response is
  1179. lost in transit to the workstation. Once the workstation's timer reaches
  1180. its limit, the shell sends a second identical request to the server.
  1181.  
  1182. When a server receives any request, it checks the request's sequence
  1183. number to see that it is one greater than the sequence number registered
  1184. in the server's connection table. If it is, the server increments that
  1185. number and processes the request as usual. However, if the two numbers
  1186. are the same, the server determines that the client, for whatever reason,
  1187. is resubmitting its last request. In some cases, the server will have a
  1188. copy of the last response. NetWare file servers maintain a 100-byte
  1189. response buffer for each of their connections. If the server is sending a
  1190. response that is less that 100 bytes in size, the server will make a copy
  1191. to that client's buffer-that is, the buffer corresponding to that
  1192. client's connection number. Since a large percentage of responses are
  1193. less that 100 bytes, a good chance exists that a server will have a copy
  1194. of the response when requests are resubmitted by clients. (This type of
  1195. response increments the Duplicate Replies Sent counter on the FCONSOLE
  1196. Statistics->LAN I/O Statistics screen.) On the other hand, if the request
  1197. was larger than 100 bytes, the server must reprocess the request and send
  1198. the response. (This type of response increments the Reexecuted Requests
  1199. counter in FCONSOLE.)
  1200.  
  1201. If the response is still in transit to the workstation when the shell
  1202. times out and resubmits the request-that is, the shell receives the
  1203. completed response after resending the request-the server will send
  1204. another response, but the shell will ignore it.
  1205.  
  1206. :  Response Lost in Transit to Shell
  1207.  
  1208. Sometimes a server may be too busy to respond within the shell's time-
  1209. out. The shell then resends the request. When the server receives this
  1210. second request, it sends a reply to the workstation stating that the
  1211. initial request was received successfully, but that the processing of it
  1212. has not yet been completed (This intermediate response increments the
  1213. Positive Acknowledgments Sent counter within the FCONSOLE Statistics->LAN
  1214. I/O Statistics screen.) When the shell receives this reply from the
  1215. server, it sets its time-out to zero and waits for the request. If the
  1216. shell's time-out expires again, it will send a third copy of the request
  1217. just in case the response was sent by the server but lost in transit.
  1218. This process will continue until the shell finally receives a completed
  1219. response. (See Fig. 32.)
  1220.  
  1221. : File Server is Busy
  1222.  
  1223. Connection-Level Error Checking
  1224.  
  1225. The connection between a workstation and server can be lost due to a
  1226. power failure or a communications problem. Both file servers and
  1227. workstation shells are equipped to handle this eventuality. On the
  1228. workstation side, the connection is checked each time a request is made.
  1229. If the shell does not receive a response to a request after it retries a
  1230. certain number of times (the number dictated by the IPX Retry Count), the
  1231. shell assumes that a problem exists with the connection and displays a
  1232. message for the user. At this point, the user has the choice of ordering
  1233. the shell to resubmit the request again or to abort the operation
  1234. completely.
  1235.  
  1236. If the operation is aborted the shell removes that connection from its
  1237. Connection table. If it does not have any other server connections, it
  1238. attempts to create a new connection with a server (using the initial
  1239. connection sequence outlined in Fig. 25). If this attempt is
  1240. unsuccessful, the shell informs the user with the following message: You
  1241. are not connected to any file servers. The shell will try to connect to a
  1242. file server whenever the current default drive is changed to an invalid
  1243. drive. <Current drive is no longer valid>.
  1244.  
  1245. Connection-level error checking at a NetWare file server comes in the
  1246. form of address verification and periodic watchdog polling. When a file
  1247. server receives a request packet for a certain connection, it verifies
  1248. that the IPX source address within the request packet matches the address
  1249. recorded for that connection within its connection table. If the
  1250. addresses do not match, the server returns a response to the sender of
  1251. the request indicating that the connection number and address do not
  1252. match.
  1253.  
  1254. The Watchdog Process
  1255.  
  1256. When a workstation is turned off, regardless of whether the LOGOUT
  1257. command was issued, the station's connection remains occupied at the
  1258. server. To clear these unused connections, the server uses the watchdog
  1259. process to poll (send a query packet to) clients that the server hasn't
  1260. heard from for a period of five minutes. This five-minute period is
  1261. tracked for each connection in the Watchdog Timer field of the server's
  1262. Connection table. If the shell within the station that the server is
  1263. polling is still operational, it will respond to the query and the server
  1264. will reset its timer for that connection.
  1265.  
  1266. However, if the workstation has been turned off or some communications
  1267. problem exists on the network, the server will not receive a response
  1268. from the shell. In this instance, the watchdog process resets the
  1269. connection's Watchdog Timer field to zero, but increments the Watchdog
  1270. Counter field by one. The next packet that the watchdog process sends to
  1271. the workstation will be sent a minute later. If the watchdog continues to
  1272. hear nothing from the workstation, it will send a packet every minute
  1273. until it has sent a total of 11 polling packets to that workstation. 
  1274. Fig. 33 illustrates the timetable for a connection that does not answer
  1275. to a server's queries. The server will clear the workstation's connection
  1276. if no response to the last watchdog packet is received. (NetWare 386-
  1277. based servers provide a setable parameter that allows administrators to
  1278. monitor when workstations are logged out by the watchdog process. This
  1279. option is set with the following command: SET CONSOLE DISPLAY WATCHDOG
  1280. LOGOUTS = ON.)
  1281.  
  1282. : Watchdog Timetable for a Connection that Does Not Respond
  1283.  
  1284. Conclusions
  1285.  
  1286. NetWare's client-server communications are governed by a series of
  1287. protocols. These protocols can be broken up by functionality: protocols
  1288. used for all communications (the medium access protocols and IPX),
  1289. administrative protocols (the RIP and SAP), protocols concerned with
  1290. connection control (the NCP and Watchdog) and, finally, the protocol with
  1291. defines the coding of service requests (the NCP). This document explains
  1292. the operation and interoperation of these protocols; however, it does not
  1293. attempt to apply this information to all possible network configurations
  1294. and environments. It is up to you to apply this information to your
  1295. specific network(s).
  1296.  
  1297. Appendix A: Implementing Redundant Cabling
  1298.  
  1299. In internetworks that contain 286-based NetWare file servers,
  1300. incorporating multiple paths to those file servers may result in
  1301. inefficient routing. Fig. 34 shows an example of a 286-based NetWare
  1302. internet work that contains redundant paths to two file servers.
  1303.  
  1304. : Sample Redundant Path Configuration
  1305.  
  1306. The problem with this sample network configuration involves the route
  1307. taken by workstations on segment BB to communicate with file server FS1.
  1308. Although the shortest route between the workstations on BB and FS1 is
  1309. through NIC B on FS1, there is a good chance that packets may pass
  1310. through FS2 onto AA and subsequently through NIC A of FS1.
  1311.  
  1312. Since traversing through an intermediate NetWare router can cause up to
  1313. 40 percent degradation in the performance of packet exchanges between a
  1314. workstation and a file server, the scenario illustrated in Fig. 35 is not
  1315. the most desirable.
  1316.  
  1317. : Inefficient Path to FS1
  1318.  
  1319. Routing problems occur because of the file service addressing scheme used
  1320. for 286-based NetWare file servers, combined with the algorithm for
  1321. establishing a connection to a file server.
  1322.  
  1323. File Service Addressing
  1324.  
  1325. The file services of a NetWare file server are assigned a specific
  1326. address within the file server. With 286-based NetWare servers, file
  1327. services are addressed with respect to NIC A in the file server. In other
  1328. words, when the file server advertises its existence, it provides only
  1329. the network and node address assigned to its NIC A-a socket address is
  1330. also included but it is not specific to NIC A. a shows a logical
  1331. representation of the file service addressing within a 286-based NetWare
  1332. file server.
  1333.  
  1334. : Addressing of File Services in NetWare File Servers
  1335.  
  1336. With NetWare 386, the file services are addressed with respect to an
  1337. internal network number assigned when the server is booted up. NetWare
  1338. 386 assigns the file services node address 1. (See Fig. 36b.)
  1339.  
  1340. The Connection Algorithm
  1341.  
  1342. The problem inherent to the addressing scheme used for 286-based NetWare
  1343. file servers arises when LOGIN, ATTACH or the preferred server shell
  1344. attempts to connect to a specific server. Fig. 37 illustrates the way
  1345. that the file services of both servers appear to the workstations.
  1346.  
  1347. As we have seen, a workstation's Get Local Target request asks for the
  1348. fastest route to the network segment on which the file server is located
  1349. (segment AA for FS1.)  Since the router in FS1 and the router in FS2 both
  1350. register the same distance to network segment AA (two Ticks), both will
  1351. respond to the Get Local Target request.
  1352.  
  1353. : Logical Positioning of File Services
  1354.  
  1355. If FS2 is the first to respond to the requests, the workstation assumes
  1356. that FS2 has the fastest route, and therefore sends the create connection
  1357. request packet through FS2. If FS2 is consistently faster than FS1 in
  1358. responding to Get Local Target requests, connections to FS1 will always
  1359. be established through FS2.
  1360.  
  1361. Fig. 38 shows the entire sequence that the workstation goes through to
  1362. connect to FS1 if FS2 responds to a Get Local Target request first. In
  1363. this sequence, FS2 is assumed to be consistently faster than FS1 in
  1364. responding to Get Local Target requests.
  1365.  
  1366. Since FS2 is always the first to respond, the shell initially connects to
  1367. FS2 (using the sequence shown in Fig. 25).  After making this initial
  1368. connection, the shell returns the DOS prompt to the user.
  1369.  
  1370. : Workstation Sequence For Get Local Target   Figure 38 (Continued):
  1371. Workstation Sequence For Get Local Target
  1372.  
  1373. The user can then enter the command "LOGIN FS1/" to log in to FS1
  1374. (following the sequence outlined in Fig. 27). First, the shell queries
  1375. FS2's bindery for FS1's address. Next the workstation broadcasts a Get
  1376. Local Target request. The router for FS1 and the router for FS2 both
  1377. answer this request, but FS2's router responds first. Therefore, the
  1378. workstation assumes that FS2 must have the fastest route to network
  1379. segment AA and sends its connection request-and all subsequent packets
  1380. intended for FS1-through FS2. Since FS1 depends on the workstation to
  1381. find the fastest route between the, FS1 sends all responses through FS2.
  1382.  
  1383. To avoid this inefficient routing scenario, you can connect workstations
  1384. on the same segment as a file server's NIC A when you have redundant
  1385. paths to the server. (See Fig. 39.)  With the correct configuration, the
  1386. shell receives the address of FS1 from FS2's bindery and makes the Get
  1387. Local Target call to IPX. IPX determines that FS1 and the workstation are
  1388. on the same network segment and tells the shell to address packets
  1389. directly to FS1.
  1390.  
  1391. : Correct Configuration of Redundant Paths with 286-based NetWare
  1392.  
  1393. Note that the connection sequence followed for the pre-v3.01 shell and
  1394. LOGIN.EXE  is the same as that followed by the preferred server shell.
  1395. Therefore, the scenario described above applies for the preferred server
  1396. shell when a preferred is specified by the user.
  1397.  
  1398. Another Redundant Path Configuration
  1399.  
  1400. Fig. 40 shows another possible configuration that incorporates redundant
  1401. paths with 286-based NetWare file servers. In this configuration,
  1402. workstations on network BB should have direct access to both FS1 and FS2.
  1403. Due to the 286-based NetWare addressing scheme, however, packets destined
  1404. for one file server might go through the other file server first.
  1405.  
  1406. For instance, if a workstation on BB wants to log in to FS1 but initially
  1407. connects to FS2, it will query FS2's bindery for FS1's address. The
  1408. address returned will include network number AA. The workstation will
  1409. then issue a Get Local Target request for AA. If FS2 responds to this
  1410. request first, the workstation's communications with FS1 will go through
  1411. FS2.
  1412.  
  1413. : Redundant Paths With 286-based NetWare File Server
  1414.  
  1415. Unfortunately, there is no all-inclusive solution to the routing problems
  1416. possible with this configuration. However, the configuration shown in
  1417. Fig. 41 will keep unnecessary routing to a minimum. This configuration
  1418. places NIC A for server FS1 and NIC A for server FS2 on different
  1419. networks: FS1's NIC A is connected to AA; FS2's NIC A is connected to BB.
  1420. Furthermore, workstations that access FS1 the majority of the time are
  1421. connected to AA, while those that access FS2 most often are connected to
  1422. BB. This configuration guarantees workstations a direct path to the file
  1423. server that they access most frequently.
  1424.  
  1425. : Keeping Routing To A Minimum
  1426.  
  1427. Redundant Paths with NetWare 386
  1428.  
  1429. Thanks to the internal network addressing scheme used by NetWare 386-
  1430. based file servers, they avoid the redundant-path problems experienced by
  1431. 286-based NetWare servers. To illustrate, suppose FS1 is a NetWare 386
  1432. file server with an internal network address of CC. In this case, FS2
  1433. registers two Hops to CC, while FS1 registers only one Hop to CC.
  1434.  
  1435. When the shell obtains the address CC from FS2's bindery, only FS1
  1436. responds to the Get Local Target request. FS2 does not answer the request
  1437. because it no longer has a route equal to the fastest route to network
  1438. segment CC.
  1439.  
  1440. The algorithms the NetWare shell uses to connect to a file server are
  1441. relatively simple in design. The basic procedure is the same: get a
  1442. server's address, obtain a route to that address, and send a request to
  1443. establish a connection with the server.
  1444.  
  1445. However, when you configure 286-based NetWare file servers in an
  1446. internetwork with redundant paths, the shell may inadvertently route
  1447. packets through an intermediate router, even though the workstation is
  1448. connected to the same network segment as the file server it wants to
  1449. communicate with. As a result, you must carefully design redundant-path
  1450. networks to avoid such routing inefficiencies. As a general rule, always
  1451. connect those workstations that will spend most of the time accessing a
  1452. certain server to the NIC A segment of that server.
  1453.  
  1454. Appendix B: Internal Components of a File Server
  1455.  
  1456. It is a common misconception that NIC A enjoys a higher priority within
  1457. the 286-based NetWare servers and that it is therefore somewhat faster
  1458. than the other NICs. However, NIC A must vie for access to routing and
  1459. file services as a peer of NICs B, C, and D. In fact, within 286-based
  1460. NetWare servers, the only difference between NIC A and its peers is that
  1461. the address of the server is tied to it.
  1462.  
  1463. 286-Based NetWare Communication Components
  1464.  
  1465. To fully understand the part that NICs play within 286-based and NetWare
  1466. 386 servers, it is necessary to look at the communications components
  1467. that make up a server. Fig. 42 gives a graphic representation of the
  1468. communication-related components of a 286-based server that contains two
  1469. NICs.
  1470.  
  1471. : Internal Communication Components of a 286-based NetWare File Server
  1472.  
  1473. Each NIC has a corresponding driver. These drivers can be logically
  1474. separated into a send portion that transmits packets through the NIC and
  1475. a receive portion that pulls packets off the NIC. The receive portion is
  1476. commonly called the driver interrupt service routine (ISR) since it is
  1477. executed each time the NIC generates a hardware interrupt. (In most
  1478. cases, a hardware interrupt from the NIC indicates that a packet has been
  1479. received.)  When a packet is received, the ISR checks the length of the
  1480. packet to make sure that it is large enough to be a viable IPX packet but
  1481. not so large that it will not fit into the server's buffers. If the
  1482. packet does not pass this test, the driver simply discards it. If the
  1483. packet is viable, the driver attempts to place the packet in a buffer.
  1484.  
  1485. A 286-based file server uses two sets of packet buffers: file service
  1486. process (FSP) buffers and communication buffers. The FSP buffers are
  1487. primarily used for processing service requests (NCP packets) and can
  1488. number between one and 10, depending on the configuration of the server.
  1489. These buffers reside within the DGroup memory segment of the server and
  1490. are subject to its limitations. (Due to the design of the Intel 80286
  1491. processor, memory must be divided into 64KB segments. The DGroup segment
  1492. has been optimized in the NetWare operating system code to be the fastest
  1493. segment. It contains several components besides the FSP buffers which,
  1494. for larger server configurations, may limit the memory available for
  1495. these FSP buffers.)
  1496.  
  1497. All FSP buffers are the same size; they are sized to handle the largest
  1498. packet that  any of the server's NIC drivers can receive. For instance,
  1499. if the server contains an Ethernet driver able to handle 1,024-byte
  1500. packets and an Arcnet driver able to handle 512-byte packets, the buffers
  1501. will sized to handle 1,024-byte packets.
  1502.  
  1503. The communication buffers act as overflow areas for packets being
  1504. received by the server. The number of buffers that exist ranges from 40
  1505. (the default) to 250 for version 2.15c-this number is set within NETGEN
  1506. at installation. These communication buffers are also sized to handle the
  1507. largest receivable packet size. Both sets of buffers are set up as first
  1508. in, first out queues, or linked lists, where the first packets to be
  1509. received are placed at the front of the queue and all subsequent packets
  1510. placed in line after that.
  1511.  
  1512. Without examining the contents of the received packet, the driver ISR
  1513. first attempts to place the packet in an FSP buffer. If the FSP buffers
  1514. are full, the ISR will try to place the packet in a communication buffer.
  1515. The packet is discarded if both sets of buffers are full. The assumption
  1516. is that the packet-level error checking implemented at the transport
  1517. layer (handled by the NCP, SPX, and so on.) will cause the sender to send
  1518. another packet later when the server is not so busy. Once the ISR has
  1519. placed the packet in a buffer or has discarded it, the ISR returns
  1520. control of the CPU to the server and waits for another packet to be
  1521. received by its NIC. The ISR for each NIC follows this same routine. Each
  1522. has equal access to the buffers and places received packets at the end of
  1523. the FSP or communication buffer queues.
  1524.  
  1525. A routing process services the FSP and communication buffers. (This
  1526. process is technically referred to as the Mux process or polling
  1527. process.)  The routing process periodically checks the contents of the
  1528. FSP and communication buffers. This process is responsible for routing
  1529. packets found within these buffers to their proper destination, whether
  1530. that be in or outside the server. Generally, five types of packets can be
  1531. found in the buffers:
  1532.  
  1533. o    Service requests for the file server (NCP packets addressed to the
  1534.      server)
  1535.  
  1536. o    Packets that need to be routed to another network segment
  1537.  
  1538. o    RIP packets
  1539.  
  1540. o    SAP packets
  1541.  
  1542. o    Packets addressed to other processes internal to the file server,
  1543.      such as a nondedicated DOS process or a value-added process (VAP)
  1544.  
  1545. When the routing process examines a packet in one of its buffers, it
  1546. takes one of four actions:
  1547.  
  1548. o    If it finds a service request for the server, the routing process
  1549.      will schedule an FSP to service the request. The routing process
  1550.      will then go on to the next buffer.
  1551.  
  1552. o    If it finds a packet not addressed to the server, the routing
  1553.      process will check its Routing Information table for the best route
  1554.      to the destination and send the packet through the appropriate NIC.
  1555.      In this capacity, the routing process acts as the internal router of
  1556.      a file server.
  1557.  
  1558. o    If it finds a RIP or SAP packet the routing process will update its
  1559.      Routing or Server Information table, respectively, if necessary.
  1560.      However, if the packet is a RIP or SAP request (such as a Get
  1561.      Nearest Server request) the routing process will get the appropriate
  1562.      information from its tables and send a response.
  1563.  
  1564. o    If it finds a packet addressed to another process within the server
  1565.      (the packet would be identified by the destination socket number in
  1566.      the IPX header) the routing process will pass the packet on to that
  1567.      process.
  1568.  
  1569. The routing process first checks the FSP buffers, starting at the top of
  1570. the queue. Since file service requests to the server can only be
  1571. processed in the FSP buffers, the routing process must try to keep the
  1572. FSP buffers as free as possible for these types of packets. Since the NIC
  1573. driver ISRs indiscriminately place packets into whichever buffers are
  1574. free at the time, the routing process may have to shuffle packets back
  1575. and forth between the FSP and communication buffers. Before checking the
  1576. contents of the FSP buffers, the routing process checks into see if all
  1577. the buffers are full. If so, the routing process assumes that some NCP
  1578. requests may have overflowed to the communication buffers. Therefore, any
  1579. non-NCP packets that the routing process finds in the FSP buffers are
  1580. moved over to the communication buffers to make room in the FSP buffers
  1581. for all the NCP requests. If the FSP buffers are not full, the routing
  1582. process simply processes all of the packets where they are.
  1583.  
  1584. Having completed the scheduling or movement of packets in the FSP
  1585. buffers, the routing process switches its attention to the communication
  1586. buffers. The routing process attempts to move any NCP request packets
  1587. that it finds over to the FSP buffers. It places these packets in a
  1588. separate queue within the communication buffers if the FSP buffers are
  1589. full. This queue is later checked by the FSP buffers as they finish
  1590. processing their current requests. Any packets that are not NCP requests
  1591. are routed or processed within the communication buffers by the routing
  1592. process.
  1593.  
  1594. NetWare 386
  1595.  
  1596. The NetWare 386 servers follow the same communication mode as 286-based
  1597. servers, with the following exceptions:
  1598.  
  1599. o    NIC drivers may be used re-entrantly to handle one or more NICs,
  1600.      therefore saving RAM.
  1601.  
  1602. o    Only one set of packet buffers exists within a NetWare 386 server
  1603.      (this difference stems from the 32-bit addressing scheme used by 386
  1604.      processors.)
  1605.  
  1606. o    FSP buffers are taken from a pool as they are needed and are not
  1607.      assigned to one specific buffer. The number of FSP buffers may
  1608.      increase as the load on the server increases.
  1609.  
  1610. o    NetWare 386 servers contain an internal network number for server
  1611.      addressing.
  1612.  
  1613. Fig. 43 illustrates the structure of the NetWare 386 communications
  1614. environment.
  1615.  
  1616. : Internal Communication Components of a NetWare 386 File Server
  1617.  
  1618. Appendix C: RIP and SAP Bandwidth Requirements
  1619.  
  1620. On large internetworks with several hundred servers, administrators
  1621. become concerned with the load that RIP and SAP broadcasts will place on
  1622. their network segments. Of course, these concerns can be appeased for
  1623. asynchronous and X.25 links since only changed server and routing
  1624. information is sent on these lines. On other segment types the traffic
  1625. caused by these broadcasts does not cause a sginificant load. The
  1626. requirements and some examples are shown in Fig. 44. As you can see, the
  1627. SAP broadcasts for an internetwork containing 250 servers account for
  1628. less than one percent of the total bandwidth (10Mb/s) of an Ethernet
  1629. segment.
  1630.  
  1631. : Bandwidth Requirements for 60 Second Broadcasts
  1632.  
  1633. Total traffic load of routing and server information broadcasts on any
  1634. given segment will be equal to broadcasting information about all the
  1635. network segments and servers that exist on the internetwork. For example,
  1636. on a T1 link between two NetWare routers, one router will broadcast
  1637. information about all of the network segments and servers that it is
  1638. making available to the other router (using the best information
  1639. algorithm). The other router will broadcast information about all the
  1640. segments and servers that it is making available to the first router. The
  1641. total of the two equals the total number of servers and segments that
  1642. reside on the internetwork.
  1643.